{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 第四章 评估方法和各种数据处理\n",
    "# 评估方法\n",
    "\n",
    "#分类问题评估方法\n",
    "from sklearn.datasets import load_breast_cancer # 导入乳腺癌数据集\n",
    "data = load_breast_cancer() # 加载数据集\n",
    "X = data.data # 特征数据\n",
    "y = 1 - data.target # 反转标签的0和1\n",
    "X = X[:, :10] # 只取前10个特征\n",
    "from sklearn.linear_model import LogisticRegression # 导入逻辑回归模型\n",
    "model_lor = LogisticRegression() # 创建逻辑回归模型\n",
    "model_lor.fit(X, y) # 训练模型\n",
    "y_pred = model_lor.predict(X) # 预测标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[337  20]\n",
      " [ 30 182]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(569,)"
      ]
     },
     "execution_count": 118,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix # 导入混淆矩阵函数\n",
    "cm = confusion_matrix(y, y_pred) # 计算混淆矩阵\n",
    "print(cm) # 输出混淆矩阵\n",
    "y.shape # 原始标签的形状"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9121265377855887"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "accuracy_score(y, y_pred) # 准确率,公式为 (TP + TN) / (TP + TN + FP + FN)，TP表示真正例，TN表示真负例，FP表示假正例，FN表示假负例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.900990099009901"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import precision_score\n",
    "precision_score(y, y_pred) # 精确率，公式为 TP / (TP + FP)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8584905660377359"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import recall_score\n",
    "recall_score(y, y_pred) # 召回率，公式为 TP / (TP + FN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8792270531400966"
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import f1_score\n",
    "f1_score(y, y_pred) # F1分数，公式为 2 * (precision * recall) / (precision + recall)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[7.67684225e-03, 9.92323158e-01],\n",
       "       [2.03210118e-02, 9.79678988e-01],\n",
       "       [2.34736953e-03, 9.97652630e-01],\n",
       "       ...,\n",
       "       [2.35262410e-02, 9.76473759e-01],\n",
       "       [8.13847852e-06, 9.99991862e-01],\n",
       "       [9.99572256e-01, 4.27744050e-04]])"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_lor.predict_proba(X) # 预测概率，默认大于0.5为正类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[267  90]\n",
      " [  6 206]]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\Users\\admin\\anaconda3\\envs\\ml\\lib\\site-packages\\ipykernel_launcher.py:2: DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  \n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "y_pred2 = (model_lor.predict_proba(X)[:, 1]>0.1).astype(np.int) # 预测概率大于0.1的为正类\n",
    "print(confusion_matrix(y, y_pred2)) # 输出新的混淆矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8312829525483304\n",
      "0.9716981132075472\n"
     ]
    }
   ],
   "source": [
    "print(accuracy_score(y, y_pred2))\n",
    "print(recall_score(y, y_pred2))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_curve # 导入ROC曲线函数\n",
    "probas = model_lor.predict_proba(X) # 预测概率\n",
    "fpr, tpr, thresholds = roc_curve(y, probas[:, 1]) # 计算假正率、真正率和阈值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 480x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt # 导入绘图库\n",
    "plt.style.use('fivethirtyeight') # 设置绘图风格\n",
    "fig, ax = plt.subplots() # 创建子图\n",
    "fig.set_size_inches(4.8, 5) # 设置图形大小\n",
    "ax.step(fpr, tpr, 'gray') # 绘制ROC曲线\n",
    "ax.fill_between(fpr, tpr, 0, color='skyblue', alpha=0.8) # 填充曲线下方区域\n",
    "ax.set_xlabel('False Positive Rate') # 设置X轴标签\n",
    "ax.set_ylabel('True Positive Rate') # 设置Y轴标签\n",
    "ax.set_facecolor('xkcd:white') # 设置背景颜色\n",
    "plt.show() # 绘制ROC曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9741557000158554"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import roc_auc_score\n",
    "roc_auc_score(y, probas[:, 1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 480x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制一个随机分类器的ROC曲线，可以看到AUC为0.5。\n",
    "from sklearn.metrics import roc_curve # 导入ROC曲线函数\n",
    "probas_random = np.random.rand(len(y), 2) # 生成随机预测概率\n",
    "fpr_random, tpr_random, _ = roc_curve(y, probas_random[:, 1]) # 计算假正率、真正率和阈值\n",
    "fig, ax = plt.subplots() # 创建子图\n",
    "fig.set_size_inches(4.8, 5) # 设置图形大小\n",
    "ax.step(fpr_random, tpr_random, 'gray') # 绘制随机分类器的ROC曲线\n",
    "ax.fill_between(fpr_random, tpr_random, 0, color='skyblue', alpha=0.8) # 填充曲线下方区域\n",
    "ax.set_xlabel('False Positive Rate') # 设置X轴标签\n",
    "ax.set_ylabel('True Positive Rate') # 设置Y轴标签\n",
    "ax.set_facecolor('xkcd:white') # 设置背景颜色\n",
    "plt.show() # 绘制随机分类器的ROC曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\Users\\admin\\anaconda3\\envs\\ml\\lib\\site-packages\\sklearn\\utils\\deprecation.py:87: FutureWarning: Function load_boston is deprecated; `load_boston` is deprecated in 1.0 and will be removed in 1.2.\n",
      "\n",
      "    The Boston housing prices dataset has an ethical problem. You can refer to\n",
      "    the documentation of this function for further details.\n",
      "\n",
      "    The scikit-learn maintainers therefore strongly discourage the use of this\n",
      "    dataset unless the purpose of the code is to study and educate about\n",
      "    ethical issues in data science and machine learning.\n",
      "\n",
      "    In this special case, you can fetch the dataset from the original\n",
      "    source::\n",
      "\n",
      "        import pandas as pd\n",
      "        import numpy as np\n",
      "\n",
      "\n",
      "        data_url = \"http://lib.stat.cmu.edu/datasets/boston\"\n",
      "        raw_df = pd.read_csv(data_url, sep=\"\\s+\", skiprows=22, header=None)\n",
      "        data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])\n",
      "        target = raw_df.values[1::2, 2]\n",
      "\n",
      "    Alternative datasets include the California housing dataset (i.e.\n",
      "    :func:`~sklearn.datasets.fetch_california_housing`) and the Ames housing\n",
      "    dataset. You can load the datasets as follows::\n",
      "\n",
      "        from sklearn.datasets import fetch_california_housing\n",
      "        housing = fetch_california_housing()\n",
      "\n",
      "    for the California housing dataset and::\n",
      "\n",
      "        from sklearn.datasets import fetch_openml\n",
      "        housing = fetch_openml(name=\"house_prices\", as_frame=True)\n",
      "\n",
      "    for the Ames housing dataset.\n",
      "    \n",
      "  warnings.warn(msg, category=FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "# 回归问题评估方法\n",
    "from sklearn.datasets import load_boston # 导入波士顿房价数据集\n",
    "data = load_boston() # 加载数据集\n",
    "X = data.data[:, [5,]] # 只取第6个特征\n",
    "y = data.target # 目标变量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression # 导入线性回归模型\n",
    "model_lir = LinearRegression() # 创建线性回归模型\n",
    "model_lir.fit(X, y) # 训练模型\n",
    "y_pred = model_lir.predict(X) # 预测标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[9.10210898]\n",
      "-34.67062077643857\n"
     ]
    }
   ],
   "source": [
    "print(model_lir.coef_) # 输出回归系数\n",
    "print(model_lir.intercept_) # 输出回归截距"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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rl0YP3483njjDfMX882bN9G3b19MmjQJffr0QUJCAgBg0KBBeOmll8r0SE2fPh1Tp07F6tWr8eijj1qNaffu3ahQoYLQY9Bqtfj+++8BAB06dDDfrtfr8cwzz0CSJGzevNnc4wcAe/fuRe/evfH6669j8eLFAIDs7Gy8/vrriIyMxNatW83fuW+99Rb69++PQ4cOITEx0WoMx48fx44dO8rc/8ILL+Dy5ctYtWqVebEcAIwfPx733HMPXn75ZezZswcAsHbtWuTk5GDq1KkYMWKExXFu3Lhh7pXavn07zp07hxEjRpRZ2ZqXl+cwkTl79iwmT56MKlWqYOvWrahZsyYA4M0330S/fv2wfv16fPfdd3jssccsfm/37t2YPHkyxowZY77t/fffx0cffYTly5dj7Nixds/rSR5fBdmpUycAwJYtW8rct3nzZos2/mDJEjXi42OFkq8GDYpw9WoOky8iIjebMmWKRZLUtWtXJCYm4vfffzffZjQa8eWXX6JOnToWyRdQPM/otddeg06nw7p168y3V69e3erQqKmXbNu2bVbjef311+0mX2vWrMHUqVMxdepUvPLKK2jbti2OHTuG3r17o0+fPuZ2GzZswPnz5zFq1CiL5AsoTtR69uyJlJQU3Lx5EwCQnJyMvLw8PPnkkxaL3VQqFSZNmmQzHgAYNWpUmeTr8OHD2LdvHx5//HGL5AsA6tevj6eeegqpqalITU21uC88PLzM8a09H9baRUVFOVyE8MMPP8BgMGDkyJHm5AsAQkNDMXnyZADAN998U+b3ateujZdfftnitiFDhgCAxWtFDh7/U6tr165ISkrCypUr8fzzz5trgeXk5ODjjz+GRqMpk7H6or//VqB+ffH9G3/5JQ933OG7iwaIiPyVaYivtBo1amD//v3mf6elpSE7OxsJCQmYNm1amfbXrl0ztzORJAnLli3DN998gxMnTiA3N9diJd7ly5etxnT77bfbjXnt2rVYu3atxW39+vXDV199ZZEYHjx4EEDxXDRrNdCuXLkCo9GI9PR0VKpUCceOHQNg2Ytm0rZtW4t5USIxm85/9epVq+c3PVdpaWlo0qQJHnzwQbz77rt49dVXsX37dnTv3h2dO3cuc306duyIatWqYdasWTh27BgeeOABdOrUCQ0bNhSaS3jkyBEAKDMnDADuuOMOhIWF4ejRo2Xu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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "fig, ax = plt.subplots() # 创建子图\n",
    "ax.scatter(X, y, color='pink', marker='s', label='data set') # 绘制散点图\n",
    "ax.plot(X, y_pred, color='blue', label='LinearRegression') # 绘制回归直线\n",
    "ax.legend() # 显示图例\n",
    "plt.show() # 绘制回归结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "43.60055177116956"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error # 导入均方误差函数\n",
    "mean_squared_error(y, y_pred) # 计算均方误差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.48352545599133423"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import r2_score\n",
    "r2_score(y, y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import SVR # 导入支持向量回归模型\n",
    "model_svr_linear = SVR(C=0.01, kernel='linear') # 创建支持向量回归模型\n",
    "model_svr_linear.fit(X, y) # 训练模型\n",
    "y_svr_pred = model_svr_linear.predict(X) # 预测标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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unbtiqFDh2LFihXo1KkT+vXrB41Gg59//hlt2rTBxo0bzdr36tULiYmJmDt3Lk6ePImGDRvi7Nmz2LhxI/r164e1a9daPMeaNWvw7LPPolmzZggKCkLv3r3RpEkTjBw5Em+++Sa6du2KAQMGQK/XY9u2bRBFEU2aNDEtErBl6NChiI6ORps2bZCQkACtVovt27fj1KlTeOyxx0wrHitWrIgvv/wSL7zwArp06YKePXuibt26KCwsxKVLl7B37160a9cOq1evBgBERkaiVatW2Lt3L0aOHInatWtDoVDgqaeeYi0wIvIob/8+Ic/hlZbAF7L3zz77DHXq1MHSpUuxePFiVK1aFa+99hoef/zxUglYZGQk1q1bh3feeQd79+7F7t270aBBAyxevBiVKlWymIBNnz4dQFFtr99++w0GgwFVq1ZFkyZN8PLLL0OlUuGLL77AsmXLEBMTg0ceeQTvvvsunn/+ecnP4d1338Xvv/+OP//8E7/99hvCw8NRs2ZNfPLJJxg+fLhZ20cffRQ7d+7EZ599hu3bt2Pbtm0IDw9H1apV8eyzz5p6BY0+//xzvP3229i4cSNyc3MhiiI6dOjABIyIPMoXvk/IM+wuxOqN3F2I1RuwCKj8eA1ci4VYfROvgfzccQ1YB8w+shRiJSIiIv/C5MrzmIARERFJxJ4ichUmYERERBKxYjy5CieyEBEREXkYEzAiIiIiD2MCRkRERORhnANGRERUhpKT7hWc/0UuwgSMiIioDJx0T+7CIUgiIiIiD2MPGBERkYNEAIZglenf3MuRpOI7hYiIyEGGYBXyGiVZbcPirWQJEzAiIiI34jwysoRzwALIrl27EBsbi2nTpskdCnnYtGnTEBsbi127dskdChGRx5w5o8DcucGYNi0Ex455V8rjXdGQQy5evIjY2FgMHjxY7lA8wphMFP+Jj49Hx44d8cEHHyA3N1fuEImISEb5+UC1atFo1y4K774bhhkzQvHww5HYuTNI7tBMOAQZQFq3bo39+/ejQoUKcofiEgMGDEDDhg0BAFlZWdi0aRNmz56N3377DVu3bkVISIjMEXqPkSNHYvDgwahenfNMiOxha1K9v02694f5aosWBeOtt8JK3a5WC1iwIARduxbIEFVp/vXOIavCw8NRr149ucNwmccee8ys10+tVqNnz544fvw4fvrpJwwbNkzG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e7fp34cPH7a4nZLxNTVOrj958iSuX79us11ZnnjiCSiVSixYsMBsqFGj0eDdd98FADz77LO2nh6RzxEABGm0VocFST4HDwYhNjZGcvJ19myuzyVfQID0gAWK1NTUUmULjOrVq2fqiXHWW2+9hSNHjuDzzz/Hpk2b0KlTJ1SqVAlXrlxBamoqjh8/js2bN6NSpUqoUqUKBgwYYCpq2q1bN1y/fh0bN25Et27dzBIcV5k8eTKeeeYZfPTRR/jll18QEhKCZcuWYciQIejbty+6du2KRo0aQRAEZGRkYN++fShfvjwOHDgAAIiNjcV//vMfjB07Ft26dcPgwYNNdcBUKhXi4+NLTUK35csvv0T//v3x4osvYtGiRWjevDlCQ0Nx+fJlHDhwADdu3EBmZiaAoqHSb775Bp06dULNmjURFRWFU6dOYfPmzShXrhyGDh0KANi2bRveeecdtG/fHnXq1EH58uWRnp6OX3/9FaGhoXj55ZetxlSzZk1MnToVU6ZMQefOnfH4448jPDwcv/32G86ePYs+ffrgqaeecuAKEBHZT6cDunSJxKlT0vZrnDu3AM8/7xtDu5YwAfMjV69exffff2/xvs6dO7ssAQsJCcGqVavw7bff4ocffsD69etRWFiISpUqoUGDBnjxxRfRqFEjU/uFCxciMTER69atwxdffIHq1avjtddew7hx48qstO+M3r17o2XLlti9ezd27NiBbt26oVWrVti9ezc+++wzbN68GSkpKQgJCUF8fDz69u1baiPz559/HrGxsZg9eza+++47REdHo1evXnj77bfRtm1biytGrUlKSsKuXbswf/58JCcnY8WKFQgKCkJcXBw6deqEAQMGmNoOGTIEhYWFSElJwZ9//gmNRoOqVavixRdfxOuvv27qVezRowcuXbqEvXv3Yv369cjPz0d8fDwef/xxjB07Fg0aNLAZ1+jRo1GrVi0sWLAAP/74IzQaDWrXro0PP/wQr7zyiuR5eES+yDgUWRyHJeXx888qvPhiuO2GAOLiDDhy5A5CQ90clJsJ2dnZou1m3i0rK8viSi5/YjAYoNFoEBwcbHfvC7mGwWDA6dOn0bFjRzz++OP4+uuv5Q7Jpznye6tWq5GRkYGEhASE+vqnr4/yhWsQmZru8KR3fbAKeY2SPBqPvef0hWsgVXY2kJRkfceO4tauzUO3bvKv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KCrQunz5crRq1Qr9+/eXfCx+YhFZsXr1aixcuBCdOnVCQkICwsPDce7cOWzevBlarRYTJkxA586d5Q7T782ePRuPPPIIXn/9dWzYsME03LJz504kJCTggw8+kDvEgLF8+XIAHH70tIEDB2LJkiXYu3cv2rRpg969eyMmJgZHjhzBzp07ERYWhv/85z9yh+n3evbsiWrVqqFevXoIDQ3Fn3/+id27dyMpKQnffPONXSuCmYARWfHAAw/gzJkzOHr0KPbt24eCggJUqFABDz/8MF566SV0795d7hADQs2aNbFt2zZ89NFH2LJlC7Zu3Yq4uDi8/PLLePPNN8ucJ0mu9eeffyI1NRWtW7dG48aN5Q4noAQFBWHNmjVYuHAh1qxZg1WrVkGj0aBy5cp48skn8X//93+lalOR6z3++ONYv349Dh48CK1Wixo1auCNN97A66+/XqpnzBbuBUlERETkYSxDQURERORhTMCIiIiIPIwJGBEREZGHMQEjIiIi8jAmYEREREQexgSMiIiIyMOYgBERERF5GBMwIiIiIg9jAkZERETkYUzAiIiIiDyMCRgRERGRhzEBIyIiIvKw/wdvxGIad9I/yAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt # 导入绘图库\n",
    "fig, ax = plt.subplots() # 创建子图\n",
    "ax.scatter(X, y, color='pink', marker='s', label='data set') # 绘制散点图\n",
    "ax.plot(X, y_pred, color='blue', label='LinearRegression') # 绘制线性回归直线\n",
    "ax.plot(X, y_svr_pred, color='red', label='SVR') # 绘制支持向量回归直线\n",
    "ax.legend() # 显示图例\n",
    "plt.show() # 绘制回归结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "72.14197118147209\n",
      "0.14543531775956597\n",
      "[[1.64398]]\n",
      "[11.13520958]\n"
     ]
    }
   ],
   "source": [
    "print(mean_squared_error(y, y_svr_pred))  # 均方误差\n",
    "print(r2_score(y, y_svr_pred))  # 决定系数\n",
    "print(model_svr_linear.coef_)  # 斜率\n",
    "print(model_svr_linear.intercept_)  # 截距"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "37.40032481992347\n",
      "0.5569708427424378\n"
     ]
    }
   ],
   "source": [
    "model_svr_rbf = SVR(C=1.0, kernel='rbf') # 创建径向基函数支持向量回归模型,C表示对误差的惩罚程度，kernel表示核函数\n",
    "model_svr_rbf.fit(X, y) # 训练模型\n",
    "y_svr_pred = model_svr_rbf.predict(X) # 预测标签\n",
    "print(mean_squared_error(y, y_svr_pred))  # 均方误差\n",
    "print(r2_score(y, y_svr_pred))  # 决定系数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "69.32813164021485\n",
      "-1.4534559402985217\n"
     ]
    }
   ],
   "source": [
    "train_X, test_X = X[:400], X[400:] # 划分训练集和测试集,模拟过拟合\n",
    "train_y, test_y = y[:400], y[400:] \n",
    "model_svr_rbf_1 = SVR(C=1.0, kernel='rbf') # 创建径向基函数支持向量回归模型\n",
    "model_svr_rbf_1.fit(train_X, train_y) # 训练模型\n",
    "test_y_pred = model_svr_rbf_1.predict(test_X) # 预测标签\n",
    "print(mean_squared_error(test_y, test_y_pred))  # 均方误差\n",
    "print(r2_score(test_y, test_y_pred))  # 决定系数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import load_breast_cancer # 导入乳腺癌数据集\n",
    "data = load_breast_cancer() # 加载数据集\n",
    "X = data.data # 特征数据\n",
    "y = data.target     # 目标变量\n",
    "from sklearn.model_selection import train_test_split    # 导入数据集划分函数\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3) # 划分训练集和测试集，测试集占30%"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9195979899497487\n",
      "0.9239766081871345\n"
     ]
    }
   ],
   "source": [
    "from sklearn.svm import SVC # 导入支持向量分类模型\n",
    "model_svc = SVC()   # 创建支持向量分类模型\n",
    "model_svc.fit(X_train, y_train) # 训练模型\n",
    "y_train_pred = model_svc.predict(X_train) # 预测训练集标签\n",
    "y_test_pred = model_svc.predict(X_test) # 预测测试集标签\n",
    "from sklearn.metrics import accuracy_score \n",
    "print(accuracy_score(y_train, y_train_pred)) # 训练集准确率\n",
    "print(accuracy_score(y_test, y_test_pred)) # 测试集准确率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0\n",
      "0.9649122807017544\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier # 导入随机森林分类模型\n",
    "model_rfc = RandomForestClassifier()  # 创建随机森林分类模型\n",
    "model_rfc.fit(X_train, y_train) # 训练模型\n",
    "y_train_pred = model_rfc.predict(X_train) # 预测训练集标签\n",
    "y_test_pred = model_rfc.predict(X_test) # 预测测试集标签\n",
    "from sklearn.metrics import accuracy_score \n",
    "print(accuracy_score(y_train, y_train_pred)) # 训练集准确率\n",
    "print(accuracy_score(y_test, y_test_pred)) # 测试集准确率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.95614035, 0.95614035, 0.95614035, 0.95614035, 0.95575221])"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_score # 导入交叉验证函数\n",
    "from sklearn.model_selection import KFold # 导入K折交叉验证函数\n",
    "cv = KFold(5, shuffle=True) # 创建5折交叉验证对象，shuffle表示是否打乱数据\n",
    "model_rfc_1 = RandomForestClassifier() # 创建随机森林分类模型\n",
    "cross_val_score(model_rfc_1, X, y, cv=cv, scoring='accuracy') # 交叉验证评分\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.97142857, 0.93877551, 0.98039216, 0.95454545, 0.97260274])"
      ]
     },
     "execution_count": 145,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cross_val_score(model_rfc_1, X, y, cv=cv, scoring=\"f1\") # F1分数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 搜索超参数\n",
    "from sklearn.datasets import load_breast_cancer # 导入乳腺癌数据集\n",
    "data = load_breast_cancer() # 加载数据集\n",
    "X = data.data # 特征数据\n",
    "y = 1 - data.target # 反转标签的0和1\n",
    "X = X[:, :10] # 只取前10个特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=KFold(n_splits=5, random_state=None, shuffle=True),\n",
       "             estimator=RandomForestClassifier(),\n",
       "             param_grid={'max_depth': [5, 10, 15],\n",
       "                         'n_estimators': [10, 20, 30]},\n",
       "             scoring='accuracy')"
      ]
     },
     "execution_count": 147,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier # 导入随机森林分类模型\n",
    "from sklearn.model_selection import GridSearchCV # 导入网格搜索交叉验证函数\n",
    "from sklearn.model_selection import KFold # 导入K折交叉验证函数\n",
    "cv = KFold(5, shuffle=True) # 创建5折交叉验证对象，shuffle表示是否打乱数据\n",
    "param_grid = {'max_depth': [5, 10, 15], 'n_estimators': [10, 20, 30]} # 定义超参数网格\n",
    "model_rfc_2 = RandomForestClassifier() # 创建随机森林分类模型\n",
    "grid_search = GridSearchCV(model_rfc_2, param_grid, cv=cv, scoring='accuracy') # 进行网格搜索交叉验证\n",
    "grid_search.fit(X, y) # 训练模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9367644775655954\n",
      "{'max_depth': 10, 'n_estimators': 20}\n"
     ]
    }
   ],
   "source": [
    "print(grid_search.best_score_) # 输出最佳交叉验证得分\n",
    "print(grid_search.best_params_) # 输出最佳超参数组合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [],
   "source": [
    "grid_search = GridSearchCV(model_rfc_2, param_grid, cv=cv, scoring='f1') # 进行网格搜索交叉验证"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "ml",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
